import { defineStore } from "pinia";
import { ref } from "vue";
import { getLoginUserUsingGet } from "@/api/userController";
import ACCESS_ENUM from "@/access/accessEnum";

/**
 * 登录用户信息全局状态
 */
export const useLoginUserStore = defineStore("loginUser", () => {
  const loginUser = ref<API.LoginUserVO>({
    userName: "未登录",
  });

  // 设置登录用户
  function setLoginUser(newLoginUser: API.LoginUserVO) {
    // 将新的登录用户赋值给loginUser
    loginUser.value = newLoginUser;
  }
  // 用户注销
  // function setLogout() {
  //   // 将登录用户信息设置为未登录
  //   loginUser.value = { userRole: ACCESS_ENUM.NOT_LOGIN };
  // }
  // 异步函数，用于获取登录用户信息
  async function fetchLoginUser() {
    // 调用getLoginUserUsingGet函数，获取登录用户信息
    const res = await getLoginUserUsingGet();
    // 如果返回的数据code为0，并且data存在
    if (res.data.code === 0 && res.data.data) {
      // 将登录用户信息赋值给loginUser.value
      loginUser.value = res.data.data;
    } else {
      // 否则，将登录用户信息设置为未登录
      loginUser.value = { userRole: ACCESS_ENUM.NOT_LOGIN };
    }
  }

  return { loginUser, setLoginUser, fetchLoginUser };
});
